package com.mjf.scala.chapter04

import scala.collection.immutable

/**
 * for循环
 */
object Scala02_For {

  def main(args: Array[String]): Unit = {

    // 对范围数据进行遍历 to：左闭右闭[1,10]
    /*    for (i: Int <- 1.to(10)) { // 可以简化为 for (i <- 1 to 10) {
          println(i)
        }*/

    // 对范围数据进行遍历 until：左闭右开[1,10)
    /*
        for (i <- 1 until 10) {
          println(i)
        }
    */

    // 在Scala语言中，没有continue和break关键字
    // 通过if判断模拟continue跳出本次循环功能
    // 通过调用方法模拟break跳出整个循环功能
    /*    for (i <- 1 to 5) {
          if (i != 3) {
            println(i)
          }
        }*/

    // 循环守卫:模拟continue功能
    /*    for (i <- 1 to 5; if i != 3) {
          println(i)
        }*/

    // 对1到10的所有的奇数进行遍历
    //    for (i <- 1 to 10 by 2) {   // 1.to(10).by(2)
    //    for (i <- 1.0 to 10.0 by 0.5) {
    /*    for (i <- 10 to 1 by -1) {
          println(i)
        }*/

    // 循环嵌套
    /*    for (i <- 1 to 3; j <- 1 to 3) {
          println("i=" + i + ",j=" + j)
        }*/

    // 引入变量
    //    for (i <- 1 to 3; j = 10 - i) {
    //      println("i=" + i + ",j=" + j)
    //    }

    // 循环返回值
//    val res: immutable.IndexedSeq[Int] = for (i <- 1 to 5) yield i  // Vector(1, 2, 3, 4, 5)
    // 在原来集合元素的基础上乘2，放到新的集合中去
/*    val res: immutable.IndexedSeq[Int] = for (i <- 1 to 5) yield i * 2  // Vector(2, 4, 6, 8, 10)
    println(res)*/

    // 倒序打印
    for (i <- 1 to 5 reverse) println(i)

  }

}
